package cn.com.qtgl.apis.iga.comp.proxy;

import cn.melonlib.apis.support.annos.ApiModule;
import cn.melonlib.apis.support.annos.ApiParameter;
import cn.melonlib.apis.support.annos.ApiRequest;
import cn.melonlib.apis.support.enums.ApiRequestActionType;
import cn.melonlib.objects.maps.JsonMap;

import cn.com.qtgl.apis.iga.model.input.InputDeptType;
import cn.com.qtgl.apis.iga.model.view.*;
import java.util.List;

@ApiModule(value = "iga",apiModuleConfig = "igaConfig")
public interface IgaProxy {

    @ApiRequest
    public List<Check> checkList();

    @ApiRequest
    public List<DeptRelationType> deptRelationTypes();

    @ApiRequest
    public List<Dept> depts(@ApiParameter(name = "status",type = "Int") Integer status, @ApiParameter(name = "scenes",type = "Boolean",required = true) Boolean scenes);

    @ApiRequest(apiRequestAction = ApiRequestActionType.SAVE)
    public DeptType saveDeptTypes(@ApiParameter(name = "entity",type = "InputDeptType",required = true) InputDeptType entity);

    @ApiRequest(apiRequestAction = ApiRequestActionType.REMOVE)
    public DeptType deleteDeptTypes(@ApiParameter(name = "id",type = "ID",required = true) String id);

    @ApiRequest
    public List<DeptType> deptTypes();

    @ApiRequest
    public List<DeptType> deptTypes(@ApiParameter(name = "id",type = "ID") String id);

    @ApiRequest
    public List<DeptType> deptTypes(@ApiParameter(name = "filter",type = "DeptTypeFilter") JsonMap<JsonMap<Object>> filter);

    @ApiRequest
    public List<DeptType> deptTypes(@ApiParameter(name = "id",type = "ID") String id, @ApiParameter(name = "filter",type = "DeptTypeFilter") JsonMap<JsonMap<Object>> filter);

    @ApiRequest
    List<DeptTreeType> deptTreeTypes(@ApiParameter(name = "id",type = "ID") String id, @ApiParameter(name = "deptTreeTypes",type = "DeptTreeTypeFilter") JsonMap<JsonMap<Object>> deptTreeTypes);
    @ApiRequest
    List<DeptTreeType> deptTreeTypes(@ApiParameter(name = "deptTreeTypes",type = "DeptTreeTypeFilter") JsonMap<JsonMap<Object>> deptTreeTypes);
    @ApiRequest
    List<DeptTreeType> deptTreeTypes(@ApiParameter(name = "id",type = "ID") String id);

    @ApiRequest
    List<Post> posts(@ApiParameter(name = "status",type = "Int") Integer status,@ApiParameter(name = "scenes",type = "Boolean",required = true) Boolean scenes);

    @ApiRequest
    List<Post> posts(@ApiParameter(name = "scenes",type = "Boolean",required = true) Boolean scenes);


    @ApiRequest
    List<PostType> postTypes(@ApiParameter(name = "id",type = "ID")String id,@ApiParameter(name = "filter",type = "PostTypeFilter") JsonMap<JsonMap<Object>> filter);
    @ApiRequest
    List<PostType> postTypes(@ApiParameter(name = "id",type = "ID")String id);
    @ApiRequest
    List<PostType> postTypes(@ApiParameter(name = "filter",type = "PostTypeFilter") JsonMap<JsonMap<Object>> filter);

    @ApiRequest
    List<NodeRulesRange> nodeRulesRanges(@ApiParameter(name = "id",type = "ID") String id,
                                         @ApiParameter(name = "status",type = "Int") Integer status,
                                         @ApiParameter(name = "filter",type = "NodeRulesRangeFilter") JsonMap<JsonMap<Object>> filter);
    @ApiRequest
    List<NodeRulesRange> nodeRulesRanges(@ApiParameter(name = "id",type = "ID") String id,
                                         @ApiParameter(name = "status",type = "Int") Integer status);
    @ApiRequest
    List<NodeRulesRange> nodeRulesRanges(@ApiParameter(name = "id",type = "ID") String id);

    @ApiRequest
    List<NodeRules> nodeRules(@ApiParameter(name = "id",type = "ID") String id,
                              @ApiParameter(name = "status",type = "Int",required = true) Integer status,
                              @ApiParameter(name = "filter",type = "NodeRulesFilter") JsonMap<JsonMap<Object>> filter);
    @ApiRequest
    List<NodeRules> nodeRules(@ApiParameter(name = "status",type = "Int",required = true) Integer status,
                              @ApiParameter(name = "filter",type = "NodeRulesFilter") JsonMap<JsonMap<Object>> filter);
    @ApiRequest
    List<NodeRules> nodeRules(@ApiParameter(name = "id",type = "ID") String id,
                              @ApiParameter(name = "status",type = "Int",required = true) Integer status);

    @ApiRequest
    List<UpstreamType> upstreamTypes(@ApiParameter(name = "id" , type = "ID") String id ,
                                     @ApiParameter(name = "filter",type = "UpstreamTypeFilter") JsonMap<JsonMap<Object>> filter);
    @ApiRequest
    List<UpstreamType> upstreamTypes(@ApiParameter(name = "id" , type = "ID") String id );
    @ApiRequest
    List<UpstreamType> upstreamTypes(@ApiParameter(name = "filter",type = "UpstreamTypeFilter") JsonMap<JsonMap<Object>> filter);

    @ApiRequest
     PersonApiBody persons(
             @ApiParameter(name = "upstreamTypeId",type = "String") String upstreamTypeId,
             @ApiParameter(name = "offset",type = "Int") Integer offset,
             @ApiParameter(name = "first",type = "Int") Integer first);
}
